From b1187d9e0edb325b6123e35e93b6547e483e6242 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Wed, 17 Dec 2003 22:33:54 +0000 Subject: [PATCH] only try to strcmp or strlen if we managed to normalize and casefold the MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Wed Dec 17 23:31:19 2003 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_search_equal_func): only try to strcmp or strlen if we managed to normalize and casefold the string correctly. Fixes crashes with non-UTF8 strings. (#121617, Patch from Tim-Philipp Müller). --- ChangeLog | 7 +++++++ ChangeLog.pre-2-10 | 7 +++++++ ChangeLog.pre-2-4 | 7 +++++++ ChangeLog.pre-2-6 | 7 +++++++ ChangeLog.pre-2-8 | 7 +++++++ gtk/gtktreeview.c | 18 ++++++++++++------ 6 files changed, 47 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1489c7b5d3..eb21e70c26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +Wed Dec 17 23:31:19 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_search_equal_func): only + try to strcmp or strlen if we managed to normalize and casefold + the string correctly. Fixes crashes with non-UTF8 strings. + (#121617, Patch from Tim-Philipp Müller). + Wed Dec 17 23:20:23 2003 Matthias Clasen * gtk/gtkexpander.c (gtk_expander_animation_timeout): Add missing diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 1489c7b5d3..eb21e70c26 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,10 @@ +Wed Dec 17 23:31:19 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_search_equal_func): only + try to strcmp or strlen if we managed to normalize and casefold + the string correctly. Fixes crashes with non-UTF8 strings. + (#121617, Patch from Tim-Philipp Müller). + Wed Dec 17 23:20:23 2003 Matthias Clasen * gtk/gtkexpander.c (gtk_expander_animation_timeout): Add missing diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 1489c7b5d3..eb21e70c26 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,10 @@ +Wed Dec 17 23:31:19 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_search_equal_func): only + try to strcmp or strlen if we managed to normalize and casefold + the string correctly. Fixes crashes with non-UTF8 strings. + (#121617, Patch from Tim-Philipp Müller). + Wed Dec 17 23:20:23 2003 Matthias Clasen * gtk/gtkexpander.c (gtk_expander_animation_timeout): Add missing diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 1489c7b5d3..eb21e70c26 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,10 @@ +Wed Dec 17 23:31:19 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_search_equal_func): only + try to strcmp or strlen if we managed to normalize and casefold + the string correctly. Fixes crashes with non-UTF8 strings. + (#121617, Patch from Tim-Philipp Müller). + Wed Dec 17 23:20:23 2003 Matthias Clasen * gtk/gtkexpander.c (gtk_expander_animation_timeout): Add missing diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 1489c7b5d3..eb21e70c26 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,10 @@ +Wed Dec 17 23:31:19 2003 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_search_equal_func): only + try to strcmp or strlen if we managed to normalize and casefold + the string correctly. Fixes crashes with non-UTF8 strings. + (#121617, Patch from Tim-Philipp Müller). + Wed Dec 17 23:20:23 2003 Matthias Clasen * gtk/gtkexpander.c (gtk_expander_animation_timeout): Add missing diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index ee5ee4128a..cfd58f4c9c 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -11608,8 +11608,8 @@ gtk_tree_view_search_equal_func (GtkTreeModel *model, gboolean retval = TRUE; gchar *normalized_string; gchar *normalized_key; - gchar *case_normalized_string; - gchar *case_normalized_key; + gchar *case_normalized_string = NULL; + gchar *case_normalized_key = NULL; GValue value = {0,}; GValue transformed = {0,}; gint key_len; @@ -11628,12 +11628,18 @@ gtk_tree_view_search_equal_func (GtkTreeModel *model, normalized_string = g_utf8_normalize (g_value_get_string (&transformed), -1, G_NORMALIZE_ALL); normalized_key = g_utf8_normalize (key, -1, G_NORMALIZE_ALL); - case_normalized_string = g_utf8_casefold (normalized_string, -1); - case_normalized_key = g_utf8_casefold (normalized_key, -1); - key_len = strlen (case_normalized_key); + if (normalized_string && normalized_key) + { + case_normalized_string = g_utf8_casefold (normalized_string, -1); + case_normalized_key = g_utf8_casefold (normalized_key, -1); + + key_len = strlen (case_normalized_key); - if (!strncmp (case_normalized_key, case_normalized_string, key_len)) + if (!strncmp (case_normalized_key, case_normalized_string, key_len)) + retval = FALSE; + } + else retval = FALSE; g_value_unset (&transformed); -- 2.30.2